home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 25 / Cream of the Crop 25.iso / compress / tar321__.zip / SOURCES.ZIP / PCLEVEL.ASM < prev    next >
Assembly Source File  |  1997-03-30  |  2KB  |  121 lines

  1.         include    farnear.inc
  2.  
  3. _TEXT        segment    byte public 'CODE'
  4.         assume    cs:_TEXT
  5.  
  6.     program    _getkey
  7. ;    int getkey(void)
  8. l1:        mov    ah,1
  9.         int    16h
  10.                 mov     ah,0
  11.         jz    short l2
  12.                 int     16h
  13.                 jmp     short l1
  14. l2:        int    16h
  15.         xor    ah,ah
  16.         ret
  17. _getkey        endp
  18.  
  19.     program    _diskserv
  20. ;    int diskserv(int op, int drive, int head, int track, int sector,
  21. ;             int nsects, void far *buffer)
  22.         push    bp
  23.         mov    bp,sp
  24.  
  25.         mov    ah,arglist[0]    ; operation
  26.         mov    al,arglist[10]    ; number of sectors
  27.  
  28.         mov    cx,arglist[6]    ; track number
  29. ;        and    ch,3        ; must not need for valid number
  30.         ror    ch,1
  31.         ror    ch,1
  32.         xchg    ch,cl
  33. ;        mov    dl,arglist[8]    ; sector number
  34. ;        and    dl,3fh        ; must not need for valid number
  35. ;        or    cl,dl
  36.         or      cl,arglist[8]    ; sector number
  37.  
  38.         mov     dl,arglist[2]    ; drive number
  39.         mov    dh,arglist[4]    ; head number
  40.         les    bx,arglist[12]    ; buffer address
  41.         int    13h
  42.         jc    short end
  43.         xor    ah,ah
  44. end:
  45.         mov    al,ah
  46.         xor    ah,ah
  47.         pop    bp
  48.         ret
  49. _diskserv    endp
  50.  
  51.     program    _diskspec
  52. ;    void far *diskspec(int op, int drive, int head, int track,
  53. ;             int nsects, struct BYTEREGS far *xregs)
  54.         push    bp
  55.         mov    bp,sp
  56.         push    di
  57.  
  58.         mov    ah,arglist[0]    ; operation
  59.  
  60.         mov    cx,arglist[6]    ; track number
  61. ;        and    ch,3        ; must not need for valid number
  62.         ror    ch,1
  63.         ror    ch,1
  64.         xchg    ch,cl
  65. ;        mov    dl,arglist[8]    ; last sector on a track
  66. ;        and    dl,3fh        ; must not need for valid number
  67. ;        or    cl,dl
  68.         or      cl,arglist[8]    ; last sector on a track
  69.  
  70.         mov     dl,arglist[2]    ; drive number
  71.         mov    dh,arglist[4]    ; head number
  72.  
  73.         xor    di,di        ; default pointer
  74.         mov    es,di        ; = NULL
  75.         int    13h
  76.  
  77.         push    ds
  78.         push    si
  79.         lds    si,arglist[10]  ; output buffer
  80.         mov    [si+0],ax
  81.         mov    [si+2],bx
  82.         mov    [si+4],cx
  83.         mov    [si+6],dx
  84.         pop    si
  85.         pop    ds
  86.  
  87.         mov    ax,di
  88.         mov     dx,es
  89.  
  90.         pop    di
  91.         pop    bp
  92.         ret
  93. _diskspec    endp
  94.  
  95.     program    _timeslice
  96. ; This function releases time-slice under Windows compatible
  97. ; multitaskers only. There are similar functions in DESQview,
  98. ; European MS-DOS, Novell NetWare etc.
  99. ; Unfortunately it is not safe to use them without installation check.
  100.         mov    ax,1680h
  101.         int    2fh
  102.  
  103. ; TopView (DESQview) - "PAUSE" - give up CPU time
  104. ;        mov    ax,1000h
  105. ;        int    15h
  106.  
  107. ; European MS-DOS 4.0 - SLEEP
  108. ;        mov    ah,89h
  109. ;        sub    cx,cx    ; CX = 0 to give up time slice
  110. ;        int    21h
  111.  
  112. ; Novell NetWare - IPX Driver - RELINQUISH CONTROL
  113. ;        mov    bx,Ah
  114. ;        int    7Ah
  115.  
  116.         ret
  117. _timeslice    endp
  118.  
  119. _TEXT        ends
  120.         end
  121.